package com.dys.test05;

import java.util.Calendar;
import java.util.Scanner;

/**
 * @className: com.dys.test05.CalendarTest2
 * @description: com.dys.test05
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/07/24 下午10:14
 */
public class CalendarTest2 {

    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入你要查看的日期(提示: 请按照2024-7-23的格式输入): ");
        String strDate = sc.nextLine();
        // String strDate = "2024-7-24";
        // 将录入的String ---> Date
        java.sql.Date sqlDate = java.sql.Date.valueOf(strDate);
        // 将Date ---> Calendar
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(sqlDate);

        System.out.print("日\t一\t二\t三\t四\t五\t六\n");

        // 获取本月最大天数
        int maxDayOfMonth = calendar.getActualMaximum(Calendar.DATE);

        // 获取到当前天数
        int nowDay = calendar.get(Calendar.DATE);

        // 将日期调为本月的1号
        calendar.set(Calendar.DATE, 1);

        // 获取这个1号是本周的第几天
        int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
        // System.out.println("1号为本周第几天: "+dayOfWeek);

        // 得到前面空出来的天数
        int day = dayOfWeek - 1;

        // 引入计数器:
        int count = 0;

        // 在日期前将空格打印出来：
        for (int i = 1; i <= day; i++) {
            System.out.print("\t");
        }

        // 空出来的天数也要放入计数器中
        count = count + day;

        // 从1号开始到maxDay号进行遍历
        for (int i = 1; i <= maxDayOfMonth; i++) {
            // 当前天数后面打*
            if (i == nowDay) {
                System.out.print(i + "*\t");
            } else {
                System.out.print(i + "\t");
            }
            // 每在控制台输出一个数字，计数器做加1操作
            count++;
            // 当计数器的个数是7的倍数的时候，就换行操作
            if (count % 7 == 0) {
                System.out.println();
            }
        }
    }
}
